import Mock from "mockjs2";
import { builder } from "../util";

const info = options => {
  console.log("客户端请求获取用户信息：", options);
  const userInfo = {
    id: "4291d7da9005377ec9aec4a71ea837f",
    name: "天野远子",
    username: "admin",
    password: "",
    avatar: "/avatar2.jpg",
    status: 1,
    telephone: "",
    lastLoginIp: "27.154.74.117",
    lastLoginTime: 1534837621348,
    creatorId: "admin",
    createTime: 1497160610259,
    merchantCode: "TLif2btpzg079h15bk",
    deleted: 0,
    roleId: "admin",
    role: {},
  };
  // role
  const roleObj = {
    id: "admin",
    name: "管理员",
    describe: "拥有所有权限",
    status: 1,
    creatorId: "system",
    createTime: 1497160610259,
    deleted: 0,
    permissions: [
      {
        roleId: "admin",
        permissionId: "dashboard",
        permissionName: "仪表盘",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"query","defaultCheck":false,"describe":"查询"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "query",
            describe: "查询",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "exception",
        permissionName: "异常页面权限",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"query","defaultCheck":false,"describe":"查询"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "query",
            describe: "查询",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "result",
        permissionName: "结果权限",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"query","defaultCheck":false,"describe":"查询"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "query",
            describe: "查询",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "profile",
        permissionName: "详细页权限",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"query","defaultCheck":false,"describe":"查询"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "query",
            describe: "查询",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "table",
        permissionName: "表格权限",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"import","defaultCheck":false,"describe":"导入"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "import",
            describe: "导入",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "form",
        permissionName: "表单权限",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"query","defaultCheck":false,"describe":"查询"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "query",
            describe: "查询",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "order",
        permissionName: "订单管理",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"query","defaultCheck":false,"describe":"查询"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "query",
            describe: "查询",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "permission",
        permissionName: "权限管理",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "role",
        permissionName: "角色管理",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "table",
        permissionName: "桌子管理",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"query","defaultCheck":false,"describe":"查询"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "query",
            describe: "查询",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
      {
        roleId: "admin",
        permissionId: "user",
        permissionName: "用户管理",
        actions:
          '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"import","defaultCheck":false,"describe":"导入"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"},{"action":"export","defaultCheck":false,"describe":"导出"}]',
        actionEntitySet: [
          {
            action: "add",
            describe: "新增",
            defaultCheck: false,
          },
          {
            action: "import",
            describe: "导入",
            defaultCheck: false,
          },
          {
            action: "get",
            describe: "详情",
            defaultCheck: false,
          },
          {
            action: "update",
            describe: "修改",
            defaultCheck: false,
          },
          {
            action: "delete",
            describe: "删除",
            defaultCheck: false,
          },
          {
            action: "export",
            describe: "导出",
            defaultCheck: false,
          },
        ],
        actionList: null,
        dataAccess: null,
      },
    ],
  };

  roleObj.permissions.push({
    roleId: "admin",
    permissionId: "support",
    permissionName: "超级模块",
    actions:
      '[{"action":"add","defaultCheck":false,"describe":"新增"},{"action":"import","defaultCheck":false,"describe":"导入"},{"action":"get","defaultCheck":false,"describe":"详情"},{"action":"update","defaultCheck":false,"describe":"修改"},{"action":"delete","defaultCheck":false,"describe":"删除"},{"action":"export","defaultCheck":false,"describe":"导出"}]',
    actionEntitySet: [
      {
        action: "add",
        describe: "新增",
        defaultCheck: false,
      },
      {
        action: "import",
        describe: "导入",
        defaultCheck: false,
      },
      {
        action: "get",
        describe: "详情",
        defaultCheck: false,
      },
      {
        action: "update",
        describe: "修改",
        defaultCheck: false,
      },
      {
        action: "delete",
        describe: "删除",
        defaultCheck: false,
      },
      {
        action: "export",
        describe: "导出",
        defaultCheck: false,
      },
    ],
    actionList: null,
    dataAccess: null,
  });

  userInfo.role = roleObj;
  return builder(userInfo);
};

/**
 * 使用 用户登录的 token 获取用户有权限的菜单
 * 返回结构必须按照这个结构体形式处理，或根据
 * /src/router/generator-routers.js  文件的菜单结构处理函数对应即可
 * @param {*} options
 * @returns
 */
const userNav = options => {
  console.log("客户端请求当前用户角色的菜单单权限：", options);
  const nav = [
    // dashboard
    {
      name: "dashboard",
      parentId: 0,
      id: 1,
      meta: {
        icon: "dashboard",
        title: "仪表盘",
        show: true,
      },
      component: "RouteView",
      redirect: "/dashboard/workplace",
    },
    {
      name: "menu",
      parentId: 0,
      id: 99,
      meta: {
        icon: "dashboard",
        title: "创建菜单",
        show: true,
      },
      component: "Menu",
    },
    {
      name: "workplace",
      parentId: 1,
      id: 7,
      meta: {
        title: "工作台",
        show: true,
      },
      component: "Workplace",
    },
    {
      name: "monitor",
      path: "https://www.baidu.com/",
      parentId: 1,
      id: 3,
      meta: {
        title: "监控页（外部）",
        target: "_blank",
        show: true,
      },
    },
    {
      name: "Analysis",
      parentId: 1,
      id: 2,
      meta: {
        title: "分析页",
        show: true,
      },
      component: "Analysis",
      path: "/dashboard/analysis",
    },

    // form
    {
      name: "form",
      parentId: 0,
      id: 10,
      meta: {
        icon: "form",
        title: "表单页",
      },
      redirect: "/form/base-form",
      component: "RouteView",
    },
    {
      name: "basic-form",
      parentId: 10,
      id: 6,
      meta: {
        title: "基础表单",
      },
      component: "BasicForm",
    },
    {
      name: "step-form",
      parentId: 10,
      id: 5,
      meta: {
        title: "分步表单",
      },
      component: "StepForm",
    },
    {
      name: "advanced-form",
      parentId: 10,
      id: 4,
      meta: {
        title: "高级表单",
      },
      component: "AdvanceForm",
    },

    // list
    {
      name: "list",
      parentId: 0,
      id: 10010,
      meta: {
        icon: "table",
        title: "列表页",
        show: true,
      },
      redirect: "/list/table-list",
      component: "RouteView",
    },
    {
      name: "table-list",
      parentId: 10010,
      id: 10011,
      path: "/list/table-list/:pageNo([1-9]\\d*)?",
      meta: {
        title: "查询表格",
        show: true,
      },
      component: "TableList",
    },
    {
      name: "basic-list",
      parentId: 10010,
      id: 10012,
      meta: {
        title: "标准列表",
        show: true,
      },
      component: "StandardList",
    },
    {
      name: "card",
      parentId: 10010,
      id: 10013,
      meta: {
        title: "卡片列表",
        show: true,
      },
      component: "CardList",
    },
    {
      name: "search",
      parentId: 10010,
      id: 10014,
      meta: {
        title: "搜索列表",
        show: true,
      },
      redirect: "/list/search/article",
      component: "SearchLayout",
    },
    {
      name: "article",
      parentId: 10014,
      id: 10015,
      meta: {
        title: "搜索列表（文章）",
        show: true,
      },
      component: "SearchArticles",
    },
    {
      name: "project",
      parentId: 10014,
      id: 10016,
      meta: {
        title: "搜索列表（项目）",
        show: true,
      },
      component: "SearchProjects",
    },
    {
      name: "application",
      parentId: 10014,
      id: 10017,
      meta: {
        title: "搜索列表（应用）",
        show: true,
      },
      component: "SearchApplications",
    },

    // profile
    {
      name: "profile",
      parentId: 0,
      id: 10018,
      meta: {
        title: "详情页",
        icon: "profile",
        show: true,
      },
      redirect: "/profile/basic",
      component: "RouteView",
    },
    {
      name: "basic",
      parentId: 10018,
      id: 10019,
      meta: {
        title: "基础详情页",
        show: true,
      },
      component: "ProfileBasic",
    },
    {
      name: "advanced",
      parentId: 10018,
      id: 10020,
      meta: {
        title: "高级详情页",
        show: true,
      },
      component: "ProfileAdvanced",
    },

    // result
    {
      name: "result",
      parentId: 0,
      id: 10021,
      meta: {
        title: "结果页",
        icon: "check-circle-o",
        show: true,
      },
      redirect: "/result/success",
      component: "PageView",
    },
    {
      name: "success",
      parentId: 10021,
      id: 10022,
      meta: {
        title: "成功",
        hiddenHeaderContent: true,
        show: true,
      },
      component: "ResultSuccess",
    },
    {
      name: "fail",
      parentId: 10021,
      id: 10023,
      meta: {
        title: "失败",
        hiddenHeaderContent: true,
        show: true,
      },
      component: "ResultFail",
    },

    // Exception
    {
      name: "exception",
      parentId: 0,
      id: 10024,
      meta: {
        title: "异常页",
        icon: "warning",
        show: true,
      },
      redirect: "/exception/403",
      component: "RouteView",
    },
    {
      name: "403",
      parentId: 10024,
      id: 10025,
      meta: {
        title: "403",
        show: true,
      },
      component: "Exception403",
    },
    {
      name: "404",
      parentId: 10024,
      id: 10026,
      meta: {
        title: "404",
        show: true,
      },
      component: "Exception404",
    },
    {
      name: "500",
      parentId: 10024,
      id: 10027,
      meta: {
        title: "500",
        show: true,
      },
      component: "Exception500",
    },

    // account
    {
      name: "account",
      parentId: 0,
      id: 10028,
      meta: {
        title: "个人页",
        icon: "user",
        show: true,
      },
      redirect: "/account/center",
      component: "RouteView",
    },
    {
      name: "center",
      parentId: 10028,
      id: 10029,
      meta: {
        title: "个人中心",
        show: true,
      },
      component: "AccountCenter",
    },
    // 特殊三级菜单
    {
      name: "settings",
      parentId: 10028,
      id: 10030,
      meta: {
        title: "个人设置",
        hideHeader: true,
        hideChildren: true,
        show: true,
      },
      redirect: "/account/settings/basic",
      component: "AccountSettings",
    },
    {
      name: "BasicSettings",
      path: "/account/settings/basic",
      parentId: 10030,
      id: 10031,
      meta: {
        title: "基本设置",
        show: false,
      },
      component: "BasicSetting",
    },
    {
      name: "SecuritySettings",
      path: "/account/settings/security",
      parentId: 10030,
      id: 10032,
      meta: {
        title: "安全设置",
        show: false,
      },
      component: "SecuritySettings",
    },
    {
      name: "CustomSettings",
      path: "/account/settings/custom",
      parentId: 10030,
      id: 10033,
      meta: {
        title: "个性化设置",
        show: false,
      },
      component: "CustomSettings",
    },
    {
      name: "BindingSettings",
      path: "/account/settings/binding",
      parentId: 10030,
      id: 10034,
      meta: {
        title: "账户绑定",
        show: false,
      },
      component: "BindingSettings",
    },
    {
      name: "NotificationSettings",
      path: "/account/settings/notification",
      parentId: 10030,
      id: 10034,
      meta: {
        title: "新消息通知",
        show: false,
      },
      component: "NotificationSettings",
    },
  ];
  const json = builder(nav);

  return json;
};

// 获取 mock.Random 对象
const { Random } = Mock;

// mock新闻数据，包括新闻标题title、内容content、创建时间createdTime
const produceNewsData = () => {
  const newsList = [];
  for (let i = 0; i < 20; i++) {
    const newNewsObject = {
      //  Random.ctitle( min, max) 随机产生一个中文标题，长度默认在3-7之间
      title: Random.ctitle(),
      // Random.cparagraph(min, max) 随机生成一个中文段落，段落里的句子个数默认3-7个
      content: Random.cparagraph(),
      // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd
      createdTime: Random.date(),
    };
    newsList.push(newNewsObject);
  }
  return newsList;
};

// 拦截该url，就可以返回newsList
Mock.mock("/mock/news", "get", produceNewsData());

// Mock.mock(/\/api\/user\/info/, "get", info);
// Mock.mock(/\/api\/user\/nav/, "get", userNav);
